]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Connect after to item 'activate' signal
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Mon, 27 May 2019 19:45:12 +0000 (14:45 -0500)
committerMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 29 May 2019 17:04:26 +0000 (12:04 -0500)
A menu item activation might lead to a call to `itemActivated` which eventually
will close the menu which leads to a `PopupMenu.removeAll` that destroys all the
items, stopping the emission of the 'activate' signal for them.

Before commit 4258ae3e this was not happening because destroy'ing a javascript
object wasn't really disposing it and thus stopping the signal emissions.

So, ensure that `itemActivated` is called after that all the other callbacks
have been consumed, and so that the menu is closed as last thing.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1326

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/557

js/ui/popupMenu.js

index 90319acccb6fe35793b2454a37f65ca1d2c72ba4..305438e47331595cba5dfbcb72648f4cc9dddd6e 100644 (file)
@@ -572,7 +572,7 @@ var PopupMenuBase = class {
                     menuItem.actor.grab_key_focus();
             }
         });
-        menuItem._activateId = menuItem.connect('activate', (menuItem, event) => {
+        menuItem._activateId = menuItem.connect_after('activate', (menuItem, event) => {
             this.emit('activate', menuItem);
             this.itemActivated(BoxPointer.PopupAnimation.FULL);
         });